/**
 * 说明：
 * - 这种写法是闭包的方式，使用这种方式好处多多，最经典的就是外部函数无法访问内部变量-即隔离外部函数与内部函数中的变量。
 */
;(function ($) {
    /*
    说明：
    - 这种写法是将方法继承到jquery对象实例上；
     */
    $.fn.extend({
        "color": function (value) {
            this.css("color", value);
            return this;
        }
    });

    /*
    说明：
    - 这种写法是将方法继承到jquery的静态方法上；
    */
    $.extend({
        /*
        描述：JS的可变参数

    	funtion 函数名（参数名1，参数名2）{

    	}
    	调用一个function时，传入的参数可以不同于定义时的参数列表

    	js的函数，调用函数时，传入的参数会被封装到一个arguments的数组中。
    	定义函数时给定的形参只是为了使用方便，对传递的参数并没有强制要求。
    	形参为什么会有值呢？
    	   1.传入参数
    	   var arguments = new Array();
    	   arguments[0] = 1;
    	   arguments[1] = 3;
    	   arguments[2] = 5;

    	   2.给形参赋值
    	   i = arguments[0];  //i = 1
    	   j = arguments[1];  //j = 3;

    	定义一个函数时，可以不给形参。直接从arguments数组中取出即可。
    	但是：一般推荐使用形参
    		  但是如果需要使用到可变参数，则不给形参。
         */
        "max": function () {
            if (arguments.length === 0) {
                throw new Error("The number of parameters of this function must be greater than 0");
            }
            let maxVal = arguments[0];
            for (let index in arguments) {
                if (arguments[index] > maxVal) {
                    maxVal = arguments[index];
                }
            }
            return maxVal;
        }
    });
})(jQuery)